來練習幫 Google Sheets(電子試算表)增加一點內容吧,把之前的 API 文件寫到 Sheets 來。
今日要點:
》Spreadsheet Service 電子試算表服務範例
》讀取 Google Docs 中的表格
》把表格的內容寫入到 Google Sheets 裡
前一天我們簡單介紹在 Google sheets 檔案中,新增了一列欄位的標題列。接下來我們要開始把之前【Day 16】介紹從 API 文件中的表格裡,抓取到的欄位值轉成二維陣列值後,建立一個新的 google Sheets 檔,再把陣列值分段落寫入到 Sheets 中。
轉存至電子試算表後,如果有需要就可以用電子試算表中強大的檢查功能,進行資料的檢查,協助工程師看有沒有地方寫重覆或遺漏的。
上述的描述我們用圖簡單繪製一下流程,如下圖所示:
二維陣列值依表格有分為幾個段落,擷取後儲存至對應的欄位。
如下圖:
正常你會有一個迴圈去把所有的表格抓取出來,計算每個表格中段落的位置,再進行段落的擷取。
不過我們一樣試著把程式碼弄的很簡單,先把一些參數先寫死比較好閱讀。
我們程式大概分幾個部份
程式碼如下:
function doGet19(e) {
//建立一個新的 Sheet 檔案
doGet18(e); //參考第18天的說明
//讀取寫在 Google Docs 文件裡的 API 描述表格, 存放在二維陣列裡
var array = doGet16(e); //參考第16天的說明
二維陣列 array 的值,稍微排版後應該會如下所示:
/* 文件取得的資料結構
[
["Docs Demo","getGmailInfo","查詢Gmail資訊"],
["說明"," 使用 Google Apps Script 查詢 Gmail 資訊。",""],
[" Request Url Params ","",""],
["鍵值","型別","說明"],
[" name"," String","查詢人的姓名"],
[" func (必填)"," String","要呼叫的功能名稱"],
[" Response Body","",""],
["鍵值","型別","說明"],
[" hello"," String","對查詢人的問候語"],
[" unreadCount"," Number","收件夾中未讀信件的數量"],
[" spamCount"," Number","垃圾信件夾中的未讀數量"],
[" messageSubject"," ArrayObject","最新5筆信件的標題"],
[" Sample","",""],
["Method","GET",""],
["URL","https://script.google.com/...",""],
["Request","?name=Jason&func=getGmailInfo",""],
["Response","{...}",""]
]
*/
依我們的需要把值分段落取出來,SegmentIndex 這裡原本是用程式去算出段落範圍。不過為了方便,我們先固定值。
var SegmentIndex = [3, 7, 13, 17];
var arrRequestUrlParams = array.slice(SegmentIndex[0], SegmentIndex[1]-1);
var arrResponseBody = array.slice(SegmentIndex[1], SegmentIndex[2]-1);
var arrSample = array.slice(SegmentIndex[2], SegmentIndex[3]);
把值寫入到 Google Sheets 對應的欄位裡。
var row = 0
var value_A = array[row][0];
var value_B = array[row][1];
var value_C = array[row][2];
var value_D = array[row+1][1];
var value_E = JSON.stringify(arrRequestUrlParams);
var value_F = JSON.stringify(arrResponseBody);
var value_G = JSON.stringify(arrSample);
setCellValue(row+2, col_A, value_A);
setCellValue(row+2, col_B, value_B);
setCellValue(row+2, col_C, value_C);
setCellValue(row+2, col_D, value_D);
setCellValue(row+2, col_E, value_E);
setCellValue(row+2, col_F, value_F);
setCellValue(row+2, col_G, value_G);
}
以上就是把寫在 Google Docs 文件裡的 API 描述表格寫入至 Google Sheets(電子試算表)的範例。
今天就先這樣囉。